package com.ybkj.daijia.server.utils;

import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPSClient;

public class FTPSUtils {

    /**
     * Description: 向FTP服务器上传文件
     *
     * @param url          FTP服务器hostname
     * @param port         FTP服务器端口
     * @param username     FTP登录账号
     * @param password     FTP登录密码
     * @param path         FTP服务器保存目录
     * @param filename     上传到FTP服务器上的文件名
     * @param input        输入流
     * @param ftpsPassword
     * @param ftpsUser
     * @param ftpsIP
     * @return 成功返回true，否则返回false
     * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保（cuihongbao@d-heaven.com）创建
     */
    public static void uploadFile(String path, String filename, InputStream input, String ftpsIP,
        String ftpsUser, String ftpsPassword) {

        FTPSClient ftpsClient = new FTPSClient();

        try {
            int reply;
            ftpsClient.connect(ftpsIP, 21);// 连接FTP服务器
            // 如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器
            ftpsClient.login(ftpsUser, ftpsPassword);// 登录
            reply = ftpsClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftpsClient.disconnect();
            }
            //修改上传文件的格式，否则图片以文本的形式传输，会失真
            //ftpClient默认上传的格式是文本
            ftpsClient.setFileType(FTP.BINARY_FILE_TYPE);

            // 存储目录是否存在
            boolean isChange = ftpsClient.changeWorkingDirectory(path);
            // 不存在则创建目录，再切换
            if (!isChange) {
                ftpsClient.makeDirectory(path);
                boolean isWorkingDirectory = ftpsClient.changeWorkingDirectory(path);
                if (isWorkingDirectory) {
                    // 储存
                    ftpsClient.storeFile(filename, input);
                }
            } else {
                // 储存
                ftpsClient.storeFile(filename, input);
            }
            input.close();
            ftpsClient.logout();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftpsClient.isConnected()) {
                try {
                    ftpsClient.disconnect();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
    }

//	public static void main(String[] args) {
//
//		// try {
//		// FileInputStream in = new FileInputStream(new
//		// File("C:\\Users\\Administrator.USER-20151201IJ\\Desktop\\TestPhoto\\Vehicle\\Vehicle0.jpg"));
//		// uploadFile("driverInfo", "xhzc_driver_11010519750422891x.jpg", in);
//		// } catch (FileNotFoundException e) {
//		// e.printStackTrace();
//		// }
//
//		// 清楚账号内容
//		clean();
//
//	}
//
//	public static void clean() {
//		FTPSClient ftpsClient = new FTPSClient();
//
//		try {
//			int reply;
//			ftpsClient.connect("172.16.11.41", 21);// 连接FTP服务器
//			// 如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器
//			ftpsClient.login("wycftp072", "@gjSyY7Bw6p!");// 登录
//			reply = ftpsClient.getReplyCode();
//			if (!FTPReply.isPositiveCompletion(reply)) {
//				ftpsClient.disconnect();
//				System.out.println("连接失败");
//			}
//
//			// 根目录列表
//			String[] listNames = ftpsClient.listNames();
//			for (String string : listNames) {
//				System.out.println(string);
//				ftpsClient.removeDirectory(string);
//			}
//
//			// clean根目录
//			String rootPath = "wycftp072";
//			ftpsClient.changeWorkingDirectory(rootPath);
//			System.out.println("***************************" + rootPath + "子目录*******************************");
//			String[] names = ftpsClient.listNames();
//			for (String string : names) {
//				System.out.println(string);
//				ftpsClient.removeDirectory(string);
//			}
//			System.out.println("***************************" + rootPath + "子目录*******************************");
//			// clean根目录
//			String path = "driverinfo";
//			ftpsClient.changeWorkingDirectory(path);
//			String[] fileNames = ftpsClient.listNames();
//			for (String string : fileNames) {
//				System.out.println(string);
//				ftpsClient.deleteFile(string);
//			}
//			ftpsClient.logout();
//		} catch (IOException e) {
//			e.printStackTrace();
//		} finally {
//			if (ftpsClient.isConnected()) {
//				try {
//					ftpsClient.disconnect();
//				} catch (IOException ioe) {
//					ioe.printStackTrace();
//				}
//			}
//		}
//	}

}
